<template>
  <div class="home">
    <!-- 筛选 -->
    <div class="search_content">
      <van-nav-bar
        :title="$route.meta.title"
        left-text="返回"
        left-arrow
        @click-left="$router.go(-1)"
      />
      <van-search
        v-model="requestParams.codeNo"
        placeholder="请输入车架号或者车牌号"
        shape="round"
        @search="initData"
        @clear="clearSearch"
      />
      <div class="search_item">
        <van-dropdown-menu :close-on-click-outside="false">
          <van-dropdown-item title="日期" ref="dateRef">
            <div class="searchbox timebox">
              <div class="title">采购签约日期</div>
              <div class="flex">
                <van-field
                  class="time_item"
                  v-model="requestParams.bizStartDate"
                  label=""
                  :placeholder="'开始时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('bizStartDate')"
                />
                -
                <van-field
                  class="time_item"
                  v-model="requestParams.bizEndDate"
                  label=""
                  :placeholder="'结束时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('bizEndDate')"
                />
              </div>
              <div class="title">付款日期</div>

              <div class="flex">
                <van-field
                  class="time_item"
                  v-model="requestParams.payStartDate"
                  label=""
                  :placeholder="'开始时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('payStartDate')"
                />
                -
                <van-field
                  class="time_item"
                  v-model="requestParams.payEndDate"
                  label=""
                  :placeholder="'结束时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('payEndDate')"
                />
              </div>
              <div class="title">入库日期</div>

              <div class="flex">
                <van-field
                  class="time_item"
                  v-model="requestParams.stockStartDate"
                  label=""
                  :placeholder="'开始时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('stockStartDate')"
                />
                -
                <van-field
                  class="time_item"
                  v-model="requestParams.stockEndDate"
                  label=""
                  :placeholder="'结束时间'"
                  input-align="right"
                  readonly
                  @click="handleSelectTime('stockEndDate')"
                />
              </div>

              <div class="insureBtn">
                <van-button
                  size="small"
                  type="warning"
                  class="resetBtn"
                  @click="handleDateReset()"
                >
                  重置
                </van-button>
                <van-button
                  size="small"
                  type="info"
                  class="confirmBtn"
                  @click="onConfirm('dateRef')"
                >
                  确认
                </van-button>
              </div>
            </div>
          </van-dropdown-item>

          <van-dropdown-item title="销售类型" ref="saleRef">
            <div class="searchbox">
              <div class="insureList">
                <div
                  class="insure_item"
                  :class="item.check ? 'active' : ''"
                  v-for="(item, index) in saleContractSaleTypeList"
                  :key="index"
                  @click="handleSearchSelect(index, 'saleContractSaleTypeList')"
                >
                  {{ item.name }}
                </div>
              </div>
              <div class="insureBtn">
                <van-button
                  size="small"
                  type="warning"
                  class="resetBtn"
                  @click="handleSearchReset()"
                >
                  重置
                </van-button>
                <van-button
                  size="small"
                  type="info"
                  class="confirmBtn"
                  @click="onConfirm('saleRef')"
                >
                  确认
                </van-button>
              </div>
            </div>
          </van-dropdown-item>

          <van-dropdown-item title="筛选" ref="statusRef">
            <div class="searchbox">
              <van-field
                name="radio"
                label="是否客户寄售二手车"
                input-align="right"
                label-width="170px"
              >
                <template #input>
                  <van-radio-group
                    v-model="requestParams.isCusJS"
                    direction="horizontal"
                  >
                    <van-radio
                      :name="item.value"
                      v-for="(item, index) in isflagList"
                      :key="index"
                    >
                      {{ item.name }}
                    </van-radio>
                  </van-radio-group>
                </template>
              </van-field>
              <van-field
                name="radio"
                label="是否新能源车"
                input-align="right"
                label-width="170px"
              >
                <template #input>
                  <van-radio-group
                    v-model="requestParams.isNewNY"
                    direction="horizontal"
                  >
                    <van-radio
                      :name="item.value"
                      v-for="(item, index) in isflagList"
                      :key="index"
                    >
                      {{ item.name }}
                    </van-radio>
                  </van-radio-group>
                </template>
              </van-field>
              <van-field
                name="radio"
                label="是否付款"
                input-align="right"
                label-width="170px"
              >
                <template #input>
                  <van-radio-group
                    v-model="requestParams.isPay"
                    direction="horizontal"
                  >
                    <van-radio
                      :name="item.value"
                      v-for="(item, index) in isflagList"
                      :key="index"
                    >
                      {{ item.name }}
                    </van-radio>
                  </van-radio-group>
                </template>
              </van-field>
              <van-field
                name="radio"
                label="是否开票"
                input-align="right"
                label-width="170px"
              >
                <template #input>
                  <van-radio-group
                    v-model="requestParams.isInvoice"
                    direction="horizontal"
                  >
                    <van-radio
                      :name="item.value"
                      v-for="(item, index) in isflagList"
                      :key="index"
                    >
                      {{ item.name }}
                    </van-radio>
                  </van-radio-group>
                </template>
              </van-field>

              <div class="insureBtn">
                <van-button
                  size="small"
                  type="warning"
                  class="resetBtn"
                  @click="handleRaidoReset()"
                >
                  重置
                </van-button>
                <van-button
                  size="small"
                  type="info"
                  class="confirmBtn"
                  @click="onConfirm('statusRef')"
                >
                  确认
                </van-button>
              </div>
            </div>
          </van-dropdown-item>
        </van-dropdown-menu>

        <!-- 服务顾问下拉 -->
        <van-popup v-model="showSelectPicker" position="bottom">
          <van-picker
            show-toolbar
            :columns="columns"
            @confirm="handleSelectConfirm"
            @cancel="showSelectPicker = false"
            value-key="name"
          />
        </van-popup>
        <!-- 时间选择 -->
        <van-popup v-model="showPickerDate" position="bottom">
          <van-datetime-picker
            v-model="currentDate"
            type="date"
            @cancel="onCancelDate"
            @confirm="onConfirmDate"
            :formatter="formatter"
          />
        </van-popup>
      </div>
    </div>

    <!-- 列表 -->
    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
      <van-list
        v-model="loading"
        :finished="finished"
        finished-text="没有更多了"
        @load="loadData"
        v-if="recordList && recordList.length != 0"
      >
        <div class="carList">
          <div
            class="carItem"
            v-for="(item, index) in recordList"
            :key="index"
            @click="goDetail(item)"
          >
            <div class="carItem_name">{{ item.carModel }}</div>
            <div class="carItem_con">
              <div class="carItem_con_lt">
                <img
                  v-if="item.imageCol && item.imageCol[0]"
                  :src="item.imageCol[0].imageUrl"
                />
                <div v-else class="noimg">暂无图片</div>
              </div>
              <div class="carItem_con_rt">
                <div class="carItem_data">
                  <div class="carItem_data_txt">
                    {{ item.carNo ? item.carNo : '-' }}
                  </div>
                  <div class="carItem_data_txt">
                    {{ item.regDate ? item.regDate : '-' }}
                  </div>
                  <div class="carItem_data_txt">
                    {{ item.carMile ? item.carMile : '-' }}万公里
                  </div>
                </div>
                <div class="carItem_data">
                  <div class="carItem_label">车架号：</div>
                  <div class="carItem_txt">
                    {{ item.vinCode ? item.vinCode : '-' }}
                  </div>
                </div>
                <div class="carItem_data">
                  <div class="carItem_label">入库日期：</div>
                  <div class="carItem_txt">
                    {{ item.stockDate ? item.stockDate : '-' }}
                  </div>
                </div>
                <div class="carItem_data">
                  <div class="carItem_label">采购展厅：</div>
                  <div class="carItem_txt">
                    {{ item.showOrgName ? item.showOrgName : '-' }}
                  </div>
                </div>
                <div class="carItem_data">
                  <div class="carItem_label">采购人员：</div>
                  <div class="carItem_txt">
                    {{ item.purName ? item.purName : '-' }}
                  </div>
                </div>
                <div class="carItem_data">
                  <div class="carItem_label">销售类型：</div>
                  <div class="carItem_txt">
                    {{ item.salesType ? item.salesType : '-' }}
                  </div>
                </div>
              </div>
            </div>
            <div class="carItem_footer">
              <div class="acount">
                采购价格：
                <span class="txt" v-if="item.amount">{{ item.amount }}元</span>
                <span class="txt1" v-else>暂无采购价格</span>
              </div>
              <div class="carStatus">{{ item.billStatus }}</div>
            </div>
          </div>
        </div>
      </van-list>
      <van-empty class="noContent" description="暂无数据" v-else />
    </van-pull-refresh>

    <!-- <div class="addBtn">
      <div
        class="footerBtn orderItem_filebox"
        @click="handleAdd"
      >
        新增线索
      </div>
    </div> -->
  </div>
</template>

<script>
import { Search, DropdownMenu, DropdownItem, Empty, Dialog } from 'vant'
import commonApi from '@/api/commonApi'
import { getCookies } from '@/utils/util.js'
import sellManageApi from '@/api/sellManageApi'

export default {
  name: 'buyManage',
  components: {
    Search,
    DropdownMenu,
    DropdownItem,
    Empty,
    Dialog,
  },
  data() {
    return {
      value: '',
      carCouponList: [
        { name: '是', code: 1, check: false },
        { name: '否', code: 0, check: false },
      ],
      saleTypeList: [],
      statusList: [
        { name: '已处理', code: 1, check: false },
        { name: '未处理', code: 2, check: false },
      ],

      recordList: [
        {
          billId: '', //单据ID
          carNo: '1111', //车牌号
          vinCode: '123123', //车架号
          carModel: '奥迪', //二手车车型
          billStatus: '跟进', //单据状态
          regDate: '2020-02-02', //初次登记日期
          stockDate: '2020-02-02', //入库日期
          showOrgName: '附件保时捷', //采购展厅
          carMile: '1000', //行驶里程数
        },
      ],
      columns: [],
      showSelectPicker: false,
      requestParams: {
        method: 'getPurchaseContractList', //固定值
        codeNo: '', //车架号或车牌号,非必填，String
        pageNo: 1, //页码，非必填，String
        orgId: '', //登录组织Id，必填，String
        bizStartDate: '', //签约开始时间，非必填，String
        bizEndDate: '', //签约结束时间，非必填，String
        stockStartDate: '', //入库开始时间，非必填，String
        stockEndDate: '', //入库结束时间，非必填，String
        payStartDate: '', //付款开始时间，非必填，String
        payEndDate: '', //付款结束时间，非必填，String
        salesType: '', //销售类型，非必填，String
        isCusJS: '', //是否客户寄售二手车，非必填，String
        isPay: '', //是否付款，非必填，String
        isInvoice: '', //是否开票，非必填，String
        userId: getCookies('userId'), //用户ID，必填，String
        isNewNY: '',
      },
      carCouponIndex: null,

      repairCenterList: [
        { name: '厦门路虎', code: 1 },
        { name: '厦门捷豹', code: 2 },
      ],
      serviceList: [
        { name: '黄某某', code: 1 },
        { name: '张某某', code: 2 },
      ],
      delayList: [
        { name: '是', billId: 1, check: false },
        { name: '否', billId: 0, check: false },
      ],
      creatList: [
        { name: '是', billId: 1, check: false },
        { name: '否', billId: 0, check: false },
      ],
      defeatList: [
        { name: '是', billId: 1, check: false },
        { name: '否', billId: 0, check: false },
      ],

      delayIndex: null,
      creatIndex: null,
      defeatIndex: null,
      showTransmitFlag: false,
      timeField: '',
      showPickerDate: false,
      currentDate: new Date(),
      list: [],
      // 分页参数
      loading: false,
      finished: false,
      refreshing: false,
      isLoadData: false,

      field: '',
      fieldName: '',
      fixCenterList: [],
      oneBillStatusList: [],
      twoBillStatusList: [],
      isflagList: [
        { name: '是', value: 1 },
        { name: '否', value: 0 },
      ],
      saleContractSaleTypeList: [],
    }
  },

  mounted() {
    this.initData()
    this.getSaleContractSaleType()
  },

  methods: {
    // 初始化列表
    initData() {
      this.requestParams.pageNo = 1
      this.loadData()
    },
    loadData() {
      if (this.isLoadData) return
      this.isLoadData = true
      this.loading = true
      this.finished = false
      // console.log(this.isLoadData);
      sellManageApi
        .secondHandCarFacade({
          ...this.requestParams,
          method: 'getPurchaseContractList',
        })
        .then((res) => {
          if (this.requestParams.pageNo == 1) {
            this.recordList = res.data || []
          } else {
            this.recordList = this.recordList.concat(res.data || [])
          }
          this.requestParams.pageNo += 1

          if (res.data && res.data.length < 10) {
            this.finished = true
            this.isLoadData = true
          }
          this.isLoadData = false
          this.loading = false
        })
    },
    // 下拉刷新
    onRefresh() {
      // 清空列表数据
      this.recordList = []
      this.finished = false
      // 重新加载数据
      // 将 loading 设置为 true，表示处于加载状态
      this.loading = true
      this.refreshing = false
      this.initData()
    },

    // 获取销售类型
    getSaleContractSaleType() {
      commonApi
        .getEnums({
          key: 'salesType',
          userId: this.requestParams.userId,
        })
        .then((res) => {
          if (res.data) {
            this.saleContractSaleTypeList = this.formatCheckData(res.data)
          }
        })
    },

    // 格式化多选数据
    formatCheckData(data) {
      data.forEach((item) => {
        item.check = false
      })
      return data
    },

    // 选择下拉
    handleSelect(field, fieldName) {
      this.showSelectPicker = true
      if (field == 'carCoupon') {
        this.columns = [
          { name: '是', value: 1 },
          { name: '否', value: 2 },
        ]
      } else if (field == 'outUser') {
        this.columns = [
          { name: '服务人员1', value: 1 },
          { name: '服务人员2', value: 2 },
        ]
      } else if (field == 'fixCenterId') {
        this.columns = this.fixCenterList
      }
      this.field = field
      this.fieldName = fieldName
    },

    // 筛选是否
    handleCarSelect(index) {
      this.carCouponIndex = index
    },
    // 筛选重置
    handleSelectReset() {
      this.requestParams.taskPersonId = ''
    },
    // 筛选时间重置
    handleDateReset() {
      this.requestParams.bizStartDate = ''
      this.requestParams.bizEndDate = ''
      this.requestParams.stockStartDate = ''
      this.requestParams.stockEndDate = ''
      this.requestParams.payStartDate = ''
      this.requestParams.payEndDate = ''
    },

    // 选择下拉确认
    handleSelectConfirm(value, index) {
      this.requestParams[this.field] = value.billId
      this.requestParams[this.fieldName] = value.name

      this.showSelectPicker = false
    },

    // 所属服务顾问重置
    handleReset() {
      this.requestParams.fixCenterId = ''
      this.requestParams.outUser = ''
    },

    //时间重置
    handleAccidentReset() {
      this.creatIndex = null
      this.defeatIndex = null
      this.delayIndex = null
      this.requestParams.isExceed = ''
      this.requestParams.taskStartCreateTime = ''
      this.requestParams.taskEndCreateTime = ''
    },
    onConfirm(ref) {
      this.$refs[ref].toggle()
      if (ref == 'saleRef') {
        let checkList = []
        this.saleContractSaleTypeList.forEach((el) => {
          if (el.check) {
            checkList.push(el.value)
          }
          this.requestParams.salesType = checkList.join(';')
        })
      }
      if (ref == 'filterRef') {
      }
      this.initData()
    },
    // 时间确认
    onConfirmDate() {
      this.requestParams[
        this.timeField
      ] = `${this.value1}-${this.value2}-${this.value3}` // 字符串拼接 结果入2020-07-03
      this.onCancelDate()
    },
    onCancelDate() {
      this.showPickerDate = false
    },

    // 日期组件自定义格式
    formatter(type, value) {
      if (type === 'year') {
        this.value1 = value // 可以拿到当前点击的数值
        return `${value}年`
      } else if (type === 'month') {
        this.value2 = value
        return `${value}月`
      }
      this.value3 = value
      return `${value}日`
    },

    // 获取list名称
    getFieldName(list, key, val) {
      if (list && list.length > 0) {
        let obj = list.filter((item) => {
          return item[key] == val
        })
        if (obj.length > 0) {
          return obj[0].name
        }
      }
      return null
    },

    // 详情
    goDetail(data) {
      this.$router.push({
        path: '/buyContractDetail',
        query: { billId: data.billId },
      })
    },

    // 顶部筛选选择数据
    handleSearchSelect(index, listKey) {
      this[listKey][index].check = !this[listKey][index].check
    },
    // 销售类型重置
    handleSearchReset() {
      this.saleContractSaleTypeList.forEach((item) => {
        item.check = false
      })
    },
    // 筛选重置
    handleRaidoReset() {
      this.requestParams.isNewNY = ''
      this.requestParams.isCusJS = ''
      this.requestParams.isPay = ''
      this.requestParams.isInvoice = ''
    },

    // 是否数据选择
    handleIsSelect(index, key, list, field) {
      this[key] = index
      this.requestParams[field] = this[list][index].billId
    },
    // 任务转交展示
    handleShowTransmit() {
      this.showTransmitFlag = true
    },
    // 确认转交
    handleTransmitSubmit() {},
    // 取消
    handleTransmitCancel() {
      this.showTransmitFlag = false
    },
    // 时间筛选
    handleSelectTime(field) {
      this.timeField = field
      this.showPickerDate = true
    },
    clearSearch() {
      this.requestParams.codeNo = ''
      this.initData()
    },
  },
}
</script>

<style lang="less" scoped="">
body {
  background: #f3f3f3;
}
.search_content {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 2;
}
.timebox {
  /deep/.van-cell::after {
    border: none;
  }
  .time_item {
    /deep/.van-field__control--right {
      border: 1px solid #d1d1d1;
      padding: 0.1rem 0;
      text-align: center;
      border-radius: 3px;
    }
  }
}
.full {
  width: 100% !important;
}
.searchbox {
  padding: 0.3rem;

  .title {
    font-size: 0.3rem;
    font-weight: bold;
    color: #333;
    margin-bottom: 0.2rem;
    padding-top: 0.2rem;
  }
  .insureList {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
    .insure_item {
      border: 1px solid #999;
      text-align: center;
      padding: 0.15rem 0rem;
      width: 30%;
      box-sizing: border-box;
      // margin-right: 0.1rem;
      font-size: 0.26rem;
      border-radius: 3px;
      color: #666;
      margin-bottom: 0.2rem;
      margin-right: 5%;
      &:nth-child(3n) {
        margin-right: 0;
      }
      &.active {
        border: 1px solid #f65e07;
        color: #f65e07;
      }
    }
  }
  .insureBtn {
    display: flex;
    justify-content: right;
    margin-top: 0.4rem;
    .resetBtn {
      padding: 0 0.4rem;
      margin-right: 0.2rem;
    }
    .confirmBtn {
      padding: 0 0.4rem;
    }
  }
}

.carList {
  padding-top: 148px;
  margin: 0.2rem;
  overflow: hidden;
  .carItem {
    padding: 0.3rem;
    background: #fff;
    border-radius: 10px;
    margin-bottom: 0.3rem;
    .carItem_name {
      margin-bottom: 0.3rem;
      padding-bottom: 0.2rem;
      border-bottom: 1px solid #f6f6f6;
      position: relative;
      font-size: 0.28rem;
      font-weight: bold;
      line-height: 0.3rem;
    }
    .carItem_con {
      display: flex;
      justify-content: flex-start;
      align-items: center;
      align-content: center;
      align-self: center;
      .carItem_con_lt {
        width: 1.6rem;
        height: 1.6rem;
        margin-right: 0.2rem;
        img {
          width: 100%;
          height: 100%;
          display: block;
          border-radius: 5px;
        }
        .noimg {
          text-align: center;
          width: 1.6rem;
          height: 1.6rem;
          line-height: 1.6rem;
          border-radius: 5px;
          // border: 1px solid #ccc;
          color: #999;
          font-size: 0.26rem;
          background: #f4f4f4;
        }
      }
      .carItem_con_rt {
        .carItem_data {
          display: flex;
          align-items: center;
          font-size: 0.26rem;
          margin-bottom: 0.1rem;
          &:last-child {
            margin-bottom: 0;
          }
          .carItem_data_txt {
            border-right: 1px solid #999;
            color: #333;
            padding-right: 0.1rem;
            margin-right: 0.1rem;
            &:last-child {
              border-right: none;
            }
          }
          .carItem_label {
            color: #333;
          }
          .carItem_txt {
            color: #333;
          }
        }
      }
    }
    .carItem_footer {
      display: flex;
      justify-content: space-between;
      border-top: 1px solid #f6f6f6;
      margin-top: 0.1rem;
      padding-top: 0.2rem;
      align-items: center;
      .acount {
        font-size: 0.26rem;
        color: #333;
        .txt {
          color: #e31f1f;
        }
        .txt1 {
          color: #666;
        }
      }
      .carStatus {
        background: #35bc04;
        color: #fff;
        border-radius: 3px;
        padding: 0.1rem 0.15rem;
        font-size: 0.24rem;
      }
    }
  }
}

.addBtn {
  position: fixed;
  bottom: 0.8rem;
  width: 100%;
  z-index: 1;
  .footerBtn {
    width: 2.8rem;
    margin: auto;
    text-align: center;
    font-size: 0.28rem;
    padding: 0.25rem 0rem;
    border-radius: 50px;
  }
  .orderItem_filebox {
    margin: auto;
    background: #409eff;
    color: #fff;
  }
  .comfirmBtn {
    background: #409eff;
    color: #fff;
  }
  .cancelBtn {
    border: 1px solid #ccc;
    color: #999;
    background: #fff;
  }
}
.noContent {
  margin-top: 2rem;
}
</style>
